A frame buffer is or includes a physical or virtual component or module that represents at least a portion of a single frame of screen data. Typically, a frame buffer is represented by or as an array of memory locations that are mapped or otherwise associated with graphics hardware (e.g., a graphics card) that outputs video signals based on the contents (e.g., pixel values) of the buffer.
Many environments (e.g., devices, systems, interfaces) do not include or otherwise provide access to a frame buffer for displaying (e.g., presenting or rendering) image data. For example, embedded devices may only include simple graphics displays, and thus may not include a hardware frame buffer or corresponding software abstraction therefore. As another example, many Web browsers and their associated runtime environments may not include or provide access to a frame buffer or a corresponding software abstraction, such as a canvas or bit-block transfer (BitBlt) operation. For example, while HTML Version 5 includes a canvas element that supports 2D graphics operations, such as copying image data into a buffer for presentation on a display, HTML Version 4 (and prior versions) do not support or provide such an abstraction.
Known approaches for transmitting dynamically changing image data, such as updates to a user interface screen or video data, include transmitting only those portions of a dynamically changed image that have been recently updated. By only sending updated image portions, considerable network bandwidth may be preserved. However, such an approach is not well suited to a limited display environment, because such an environment does not include or provide access to a hardware or software frame buffer upon which such updates may be composited. In a limited display environment, such as within an HTML Version 4-compliant Web browser, the receiving entity (e.g., client) cannot readily draw updated image portions to the screen, such as by calling or invoking an operation to copy updated image portions into a frame buffer.